export default {
    // 开启命名空间（防止各模块间命名冲突），访问时需要使用 模块名 + 方法名
    namespaced: true,
    // 管理数据（状态）
    state: {
        // 用于保存用户名
        userName: '',
        role: ''  // 存储角色名称：'生产方'、'加工方'、'管理员'
    },
    // 更改 state（同步）
    mutations: {
        updateName(state, data) {
            if (data) {
                state.userName = data
            } else {
                state.userName = 'Admin'
            }
        },
        updateRole(state, role) {
            console.log('更新角色:', role)  // 添加日志
            state.role = role
        }
    },
    getters: {
        // 判断是否是管理员
        isAdmin: state => {
            const result = state.role === '管理员'
            console.log('isAdmin:', result, '当前角色:', state.role)
            return result
        },
        // 判断是否是生产方
        isSupplier: state => {
            const result = state.role === '生产方'
            console.log('isSupplier:', result, '当前角色:', state.role)
            return result
        },
        // 判断是否是加工方
        isProcessor: state => {
            const result = state.role === '加工方'
            console.log('isProcessor:', result, '当前角色:', state.role)
            return result
        },
        // 判断是否有权限访问特定页面
        hasPermission: (state) => (path) => {
            switch(state.role) {
                case '管理员':
                    // 管理员可以访问除了供应商和加工商个人资料界面以外的所有界面
                    return !['supplier', 'processor'].includes(path)
                case '生产方':
                    // 生产方只能访问供应商相关界面
                    return path === 'supplier'
                case '加工方':
                    // 加工方只能访问加工商相关界面
                    return path === 'processor'
                default:
                    return false
            }
        }
    },
    // 异步触发 mutations
    actions: {
        updateName({commit}, data) {
            commit('updateName', data)
        },
        updateRole({commit}, role) {
            commit('updateRole', role)
        }
    }
}